//package com.gtx.common.util.uuid;
//
//import com.zjmk.core.constant.HttpStatus;
//import com.zjmk.core.constant.UserConstants;
//import com.zjmk.core.core.domain.entity.SysRole;
//import com.zjmk.core.core.domain.entity.SysUser;
//import com.zjmk.core.core.domain.model.LoginUser;
//import com.zjmk.core.exception.CustomException;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.security.core.Authentication;
//import org.springframework.security.core.context.SecurityContextHolder;
//import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
//
//import java.util.List;
//
///**
// * 安全服务工具类
// *
// * @author zjmk
// */
//@Slf4j
//public class SecurityUtils {
//
//    /**
//     * 获取用户
//     **/
//    public static LoginUser getLoginUser() {
//        try {
//            Authentication authentication  = getAuthentication();
//            if(null!=authentication){
//                return (LoginUser) getAuthentication().getPrincipal();
//            }else{
//                return null;
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//            throw new CustomException("获取用户信息异常", HttpStatus.UNAUTHORIZED);
//        }
//    }
//
//    /**
//     * 获取用户id
//     **/
//    public static Long getUserId() {
//        try {
//            LoginUser loginUser = getLoginUser();
//            if(null!=loginUser){
//                return loginUser.getUserId();
//            }else{
//                return null;
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//            throw new CustomException("获取用户信息异常", HttpStatus.UNAUTHORIZED);
//        }
//    }
//
//    /**
//     * 获取用户账户
//     **/
//    public static String getUsername() {
//        try {
//            LoginUser loginUser = getLoginUser();
//            if(null != loginUser){
//                return loginUser.getUsername();
//            }else{
//                return null;
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//            throw new CustomException("获取用户信息异常", HttpStatus.UNAUTHORIZED);
//        }
//    }
//
//    /**
//     * 获取用户昵称
//     **/
//    public static String getUserNickname() {
//        try {
//            LoginUser loginUser = getLoginUser();
//            if(null!=loginUser){
//                return getLoginUser().getNickname();
//            }else{
//                return null;
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//            throw new CustomException("获取用户信息异常", HttpStatus.UNAUTHORIZED);
//        }
//    }
//
//    /**
//     * 获取用户所属公司id
//     **/
//    public static String getUserBelongCompanyId() {
//        try {
//            LoginUser loginUser = getLoginUser();
//            SysUser sysUser = null!=loginUser?loginUser.getUser():null;
//            if(null != loginUser && null != sysUser){
//                return sysUser.getBelongToCompanyId();
//            }else{
//                return null;
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//            throw new CustomException("获取用户信息异常", HttpStatus.UNAUTHORIZED);
//        }
//    }
//
//    /**
//     * 获取Authentication
//     */
//    public static Authentication getAuthentication() {
//        return SecurityContextHolder.getContext().getAuthentication();
//    }
//
//    /**
//     * 生成BCryptPasswordEncoder密码
//     *
//     * @param password 密码
//     * @return 加密字符串
//     */
//    public static String encryptPassword(String password) {
//        BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
//        return passwordEncoder.encode(password);
//    }
//
//    /**
//     * 判断密码是否相同
//     *
//     * @param rawPassword     真实密码
//     * @param encodedPassword 加密后字符
//     * @return 结果
//     */
//    public static boolean matchesPassword(String rawPassword, String encodedPassword) {
//        BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
//        return passwordEncoder.matches(rawPassword, encodedPassword);
//    }
//
//    /**
//     * 是否为管理员
//     *
//     * @param userId 用户ID
//     * @return 结果
//     */
//    public static boolean isAdmin(Long userId) {
//        return userId != null && 1L == userId;
//    }
//
//    /**
//     * 是否为省公司管理员
//     *
//     * @return 结果
//     */
//    public static boolean isAppAdminSGS() {
//        boolean flag = false;
//        List<SysRole> roleList = getLoginUser().getUser().getRoles();
//        for (SysRole s: roleList) {
//            if (UserConstants.PROVINCIAL_COM.equals(s.getRoleKey())){
//                flag = true;
//            }
//        }
//        return flag;
//    }
//
//    /**
//     * 是否为附件管理员
//     *
//     * @return 结果
//     */
//    public static boolean isFileAdmin() {
//        boolean flag = false;
//        List<SysRole> roleList = getLoginUser().getUser().getRoles();
//        for (SysRole s: roleList) {
//            if (UserConstants.FILE_ADMIN.equals(s.getRoleKey())){
//                flag = true;
//            }
//        }
//        return flag;
//    }
//
//    /**
//     * 是否为流程管理员
//     *
//     * @return 结果
//     */
//    public static boolean isProcessAdmin() {
//        boolean flag = false;
//        List<SysRole> roleList = getLoginUser().getUser().getRoles();
//        for (SysRole s: roleList) {
//            if (UserConstants.PROCESS_ADMIN.equals(s.getRoleKey())){
//                flag = true;
//            }
//        }
//        return flag;
//    }
//}
